perm filename PRED2.FAI[SYS,HE] blob sn#020401 filedate 1972-12-06 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00005 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	TITLE OCULT   -   A HIDDEN LINE ELIMINATOR   -   AUGUST 1972.
 00005 00003	ZDEPTH(F,V)
 00007 00004	RINGIN(E,R,N) - RING IN E JUST LEFT OF R AT Nth WORD.
 00009 00005	SUBR(POTEN.)
 00010 ENDMK
⊗;
TITLE OCULT   -   A HIDDEN LINE ELIMINATOR   -   AUGUST 1972.
COMMENT /

/
;GEOMETRIC 2D LOCII ROUTINES.

;QEV(E,V).
SUBR(QEV)
BEGIN QEV
	ACCUMULATORS{E,V}
	LAC V,ARG1
	LAC E,ARG2
	LAC 1,CC(E)
	LAC BB(E)↔FMPR YPP(V)↔FADR 1,0
	LAC AA(E)↔FMPR XPP(V)↔FADR 1,0
	RET2
BEND

;QFEV(F,E,V).
SUBR(QFEV)
BEGIN QFEV
	ACCUMULATORS{E,V}
	LAC V,ARG1
	LAC E,ARG2
	LAC 1,CC(E)
	LAC BB(E)↔FMPR YPP(V)↔FADR 1,0
	LAC AA(E)↔FMPR XPP(V)↔FADR 1,0
	PFACE 0,E↔CAME 0,ARG3↔MOVNS 1
	RET3
BEND

;CROSSING(X,Y,E1,E2).
SUBR(CROSSING)
BEGIN CROSSING
	ACCUMULATORS{TT,XPTR,YPTR,E1,E2}
	LAC E2,ARG1
	LAC E1,ARG2
	LAC YPTR,ARG3
	LAC XPTR,ARG4
	LAC AA(E1)↔FMPR BB(E2)
	LAC 1,AA(E2)↔FMPR 1,BB(E1)↔FSBR 0,1↔DAC TT
	LAC BB(E1)↔FMPR CC(E2)
	LAC 1,BB(E2)↔FMPR 1,CC(E1)↔FSBR 0,1↔FDVR 0,TT↔DAC(XPTR)
	LAC CC(E1)↔FMPR AA(E2)
	LAC 1,CC(E2)↔FMPR 1,AA(E1)↔FSBR 0,1↔FDVR 0,TT↔DAC(YPTR)
	RET4
BEND
;ZDEPTH(F,V)
SUBR(ZDEPTH)
BEGIN ZDEPTH
	ACCUMULATORS{F,V}
	LAC V,ARG1
	LAC F,ARG2
	LAC 1,KK(F)
	LAC AA(F)↔FMPR XPP(V)↔FSBR 1,0
	LAC BB(F)↔FMPR YPP(V)↔FSBR 1,0
	FDVR 1,CC(F)
	RET2
BEND

;ZDALT(F,X,Y)
SUBR(ZDALT)
BEGIN ZDALT
	ACCUMULATORS{F}
	LAC F,ARG3
	LAC 1,KK(F)
	LAC AA(F)↔FMPR ARG2↔FSBR 1,0
	LAC BB(F)↔FMPR ARG1↔FSBR 1,0
	FDVR 1,CC(F)
	RET3
BEND

;UFACE(E,V)
SUBR(UFACE)
BEGIN UFACE
	ACCUMULATORS{E,V}
	LAC E,ARG2
	NVT V,E↔CAMN V,ARG1↔GO[NUF 1,E↔RET2]
	PVT V,E↔CAMN V,ARG1↔GO[PUF 1,E↔RET2]
	FATAL(UFACE)
	LIT
BEND

;UFACE.(Q,E,V)
SUBR(UFACE.)
BEGIN UFACE.
	ACCUMULATORS{Q,E,V}
	CDR E,ARG2
	CDR Q,ARG3
	NVT V,E↔CAMN V,ARG1↔GO[NUF. Q,E↔RET3]
	PVT V,E↔CAMN V,ARG1↔GO[PUF. Q,E↔RET3]
	FATAL(UFACE.)
	LIT
BEND
;RINGIN(E,R,N) - RING IN E JUST LEFT OF R AT Nth WORD.
SUBR RINGIN
BEGIN RINGIN
	ACCUMULATORS{Q,E,R}
	CDR E,ARG3
	CDR R,ARG2
	LAC ARG1
	DAP .+1↔CDR Q,(E)↔JUMPE Q,L
	CAME Q,E↔RET3; E AIN'T EMP